petalinux通过TFTP和NFS启动

TFTP 服务器设置

在此环境中,服务器目录是/srv/tftp 。

Petalinux 配置(用于 TFTP)

 

image-20250825140239589

image-20250825141522889

选择Command line interface-> Network commands->serverip variable takes precedent over DHCP server IP

image-20250825141947553

image-20250825142026532

image-20250825142052483

使用 TFTP 启动 Petalinux

按照以下步骤将 开发板 连接到电脑。步骤与之前基本相同,

在此状态下,没有引导加载程序,并且串行控制台上还没有任何输出。要通过 JTAG 启动,在主机 PC 上的 Petalinux 项目目录中运行以下命令:

这会将启动日志输出到串行控制台。

注:当输入petalinux-boot --jtag --u-boot --fpga --hw_server-url TCP:Ubuntu20:3121报错时,需要检查:

在此串行控制台上配置 u-boot 以进行 TFTP 启动。

设置已完成。重启开发板,然后再次运行petalinux-boot --jtag --u-boot --fpga --hw_server-url TCP:Ubuntu20:3121。Linux将启动,能够像之前一样登录。

由于dhcp;pxe get;pxe boot;此命令输完是通过DHCP自动分配 IP 地址导致有可能进入linux系统失败,所以可以在此步骤下设置主板IP,必须确保两边的IP地址一样。

现在可以使用 TFTP 通过网络启动 Petalinux。这样,每次自定义和运行petalinux-build时就无需将图像放置在 SD 卡上。需要对 开发板进行电源循环。

但是,使用此方法,每次启动时都会提取并使用rootfs.cpio.gz.u-boot,并且所做的任何编辑都不会在 Linux 启动后保存。

如果将rootfs设置为位于SD卡的ROOT分区,则编辑的结果将保存在SD卡上。

可以使用 NFS 解决此问题(参见下一部分):

NFS 服务器设置

Petalinux 配置(用于 NFS)

运行petalinux-config ,选择 Image Packaging Configuration,并将 Root filesystem type 更改为 NFS。将 Location of NFS root directory更改为 NFS 服务器目录/srv/nfs 。

image-20250826145501180

 

NFS 4.1在NFS 4 使能后显示,NFS 4.2在NFS 4.1 使能后显示

image-20250825101940757

image-20250825102358625

构建设备树来查看变化:其中包含与 NFS 相关的信息。

 

使用 TFTP + NFS 启动 Petalinux

由于 rootfs 位于主机 PC 上,因此每次重新启动主板时编辑的内容都不会丢失。